草庐IT

Java BufferedImage 内存消耗

全部标签

linux - 如何在 Linux 中保留虚拟内存?

我有一个应用程序在Windows上使用带有MEM_RESERVE标志的VirtualAllocEx保留一个连续的内存块。这会保留一个虚拟内存块,但不会用物理页面或页面文件block来支持它。因此,访问分配的内存将导致段错误——但其他分配不会与该虚拟内存块相交。如何使用mmap对Linux执行相同的操作?我确实注意到了thisquestion中的答案,但这真的能保证如果我不接触分配的页面,1GB的物理内存不会分配给我的进程吗?我不想要任何颠簸的问题。 最佳答案 我相信您应该能够通过使用PROT_NONE映射匿名内存来实现相同的目的。访

c++ WINAPI 共享内存结构数组

我正在尝试使用WINAPI通过共享命名内存来共享结构数组。我能够创建和管理共享内存,但是当尝试共享结构数组时,读取时数组的大小始终为0。下面是我编写的测试代码,它应该写入/读取10个条目的数组,但即使这样也是失败的。然而,我的目标是编写/读取包含2个动态数组的动态结构数组以及它们目前已包含的信息。我知道我不应该在进程之间共享指针,因为它们可能指向随机值。因此,我正在使用new为数组分配内存。这是我目前所拥有的:在两个进程中共享:#defineMEMSIZE90024typedefstruct{intid;inttype;intcount;}Entry;过程1:externHANDLEh

windows - 使用perl脚本故意消耗一定数量的内存

我需要模拟一个内存消耗大的进程。例如,在一台有4.0GiB的机器上,我需要一个可以吃掉3.2GiB的进程(提供或占用很少的MiB)。我认为它应该像这样简单:my$mbytes=3276;my$huge_string='X'x($mbytes*1024*1024);但我最终发现进程占用的内存是我需要的两倍。这在两台Windows7amd64机器上是相同的:一台是64位的,另一台是使用32位版本的StrawberryPerl我正在使用SysinternalsProcessExplorer并观看“PrivateBytes”当然,我可以只$mbytes/=2(目前,我可能会这样做),但是:有没

c++ - native 应用程序的初始内存占用量大

我注意到我正在处理的nativeC++应用程序甚至在进入我的任何代码之前就占用了相当大的内存空间(20MB)。(我指的是Windows中的“私有(private)字节”度量,据我所知这是最有用的度量)。我在“main()”函数的第一行放置了一个断点,果然,当它到达时占用空间为20MB。EXE的大小只有几兆,因此不考虑在内。我还特意删除了所有DLL,以证明它们不是问题所在。正如预期的那样,它会收到“Dllnotfound”消息,但占用空间仍为20MB!然后我想知道可能是静态初始化的对象导致的。因此,我为“new”和“malloc”都添加了断点。第一次点击那些(对于第一个静态初始化程序),

docker 部署redis报错内存分配过度

之间部署redis集群的时候报错202310:20:29.131#WARNINGMemoryovercommitmustbeenabled!Withoutit,abackgroundsaveorreplicationmayfailunderlowmemorycondition.Beingdisabled,itcanalsocausefailureswithoutlowmemorycondition,seehttps://github.com/jemalloc/jemalloc/issues/1328.Tofixthisissueadd'vm.overcommit_memory=1'to/etc

c++ - 在 C++/windows 中检测内存泄漏

出于调试目的,当我编写应用程序时,我做的第一件事就是将以下内容放入stdafx.h://--leakdetection----------------------------------------------------------#ifdef_DEBUG//http://msdn.microsoft.com/en-us/library/e5ewb1h3(v=VS.80).aspx#define_CRTDBG_MAP_ALLOC#include#include#defineDEBUG_NEWnew(_NORMAL_BLOCK,__FILE__,__LINE__)#definenewD

c++ - 在 Windows 上检测进程内存注入(inject)(反黑客)

标准黑客案例。Hack文件类型注入(inject)启动的进程并使用WriteProcessMemory调用写入进程内存。在游戏中,这不是您想要的,因为它可以让黑客改变游戏的部分并给自己带来优势。有可能会强制用户与游戏一起运行第三方程序,我需要知道什么是防止此类注入(inject)的最佳方法。我已经尝试使用一个函数EnumProcessModules,它列出了所有进程DLL,但没有成功。在我看来,黑客直接注入(inject)进程内存(堆栈末尾?),因此未被发现。目前我有几个选择。创建一个包含大多数已知公共(public)黑客的文件、文件模式、进程名称和内存模式的黑名单,并使用程序扫描它们

java - 在 Java 中从内存中执行一个可执行程序(.exe)

我想在Windows上执行内存中的程序。我不想将文件写入磁盘。我只想传入一个字节数组(这是我要执行的程序)作为参数。我不够熟练,无法编写native代码来执行此操作。同样,这应该是Windows原生的。我要在内存中执行的程序不是Java程序。它是一个可执行文件(.exe)!可执行文件应在内存中读取和运行,而不是通过Runtime.getRuntime().exec("example.exe"); 最佳答案 我还不能发表评论,否则我会的。您应该能够在这里找到一些有用的信息,人们正在尝试使用C++解决相同的问题。请告诉我,您是要编写一个

windows - Minifilter 驱动程序、内存映射和记事本

我将从我的最终目标开始。我希望我系统上的每个文档(doc、docx、pdf、txt等)都有一个固定的(对用户透明的)标题。例如,字符串“abcde”将被添加到每个文档中。为了做到这一点,我编写了一个执行以下操作的minifilter驱动程序:IRP_MJ_WRITE-如果header存在,则更改文件开头的偏移量。IRP_MJ_READ-如果header存在,则更改文件开头的偏移量。IRP_MJ_QUERY_INFORMATION-如果header存在,则更改返回的文件大小。IRP_MJ_DIRECTORY_CONTROL-如果header存在,则更改返回的文件大小。IRP_MJ_CRE

windows - 内存分析——VAD标签和代码注入(inject)

我正在研究内存取证,目前我需要了解通过多种技术在内存中查找代码注入(inject)的方法。其中一种方法涉及使用VAD标记进行代码注入(inject)。我试图找出确切的VAD是什么以及VAD标签是什么,但我就是找不到一个很好的简单解释。我唯一理解的是VAD是某种win32结构,它与进程的地址空间有关。但我不明白VAD到底是做什么的,如何使用它来注入(inject)代码,以及如何在RAM中发现使用VAD标记的代码注入(inject)。如果你能指导我完成这件事,我将不胜感激。谢谢:) 最佳答案 VAD代表虚拟地址描述符。Windows内核